package core

import (
	"fmt"
	"github.com/fsnotify/fsnotify"
	"github.com/spf13/viper"
	"mycms/global"
)

func Viper() *viper.Viper {
	//	初始化配置
	config := viper.New()
	// 设置 public 配置文件名
	config.SetConfigName("config")
	// 设置 public 配置文件类型
	config.SetConfigType("yaml")
	// 设置配置文件存放的目录
	config.AddConfigPath("./")
	// 读取该配置文件
	err := config.ReadInConfig()
	if err != nil {
		panic(fmt.Errorf("读取配置文件出错: %s \n", err))
	}

	// 监控配置文件变化
	config.WatchConfig()

	// 配置文件发生变化后要同步到全局变量CONFIG
	config.OnConfigChange(func(e fsnotify.Event) {
		fmt.Println("配置文件修改:", e.Name)
		if err := config.Unmarshal(&global.CONFIG); err != nil {
			fmt.Println(err)
		}
	})

	//	将读取的配置信息保存至全局变量CONFIG
	if err := config.Unmarshal(&global.CONFIG); err != nil {
		fmt.Println(err)
	}

	return config
}
